package cn.tedu.api;

import java.util.Collection;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;

/**
 * Date：2021年10月
 * Author：程Sir
 * Name： JavaSE-API
 * Content:
 *
 *      为什么集合要使用迭代的方式取元素呢？
 *
 *      迭代：
 *          获取集合中元素？===数组中元素获取？for循环   0---arr.length-1
 *          在取元素之前要判断当前集合中是否有元素存在，【问一下有么有下一个】，如果有就会把此元素取出来，
 *          就会继续判断，有么有下一个元素，如果有继续会将此元素取出来，重复此过程，一直到把集合中元素全部取出为止。
 *          这种方式就称为迭代！
 *      Interator对象被称之为迭代器。
 *
 *          迭代器遵循的过程：
 *              “问”、“取”、“删”（删不是必要的动作）
 *
 *
 */
public class InteratorDemo {

    public static void main(String[] args) {
        Collection collection = new HashSet();
        collection.add("java");
        collection.add("web");
        collection.add("C");
        collection.add("C++");
        collection.add("python");
        collection.add("java");
        System.out.println(collection);
        // 创建迭代器对象
        Iterator iterator = collection.iterator();
        // 判断集合中是否有下一个元素
        while (iterator.hasNext()){
            // 程序能够进来说明是有的 ，那么取出来
            Object o = iterator.next();
            System.out.println(o);
            // 快速失败机制 fail-fast
            /*
                在迭代器迭代集合中的元素时，是不可以使用迭代器以外的方法区操作集合的
             */
//            collection.remove("c++");  //抛出异常
//            collection.add("大数据"); //抛出异常
            if(o.equals("C++")){
                iterator.remove();// 使用迭代器自身提供的remove方法进行删集合元素
            }
            System.out.println("=============");

        }
        System.out.println(collection);


    }

}
